package challenge.p1;

import java.util.Scanner;

/**
 * @author 挚爱之夕
 * @version 1.0
 * @implSpec
 * 【问题描述】
 * 给定一个长度为n的数列A1,A2,…,An和一个非负整数x，给定 m次查
 * 询,每次询问能否从某个区间[l,r]中选择两个数使得他们的异或等于x。
 * 【输入格式】
 * 输入的第一行包含三个整数n,m,x。
 * 第二行包含n个整数A1,A2,…,A。
 * 接下来m行，每行包含两个整数1,r, 表示询问区间[l,r]。
 * 【输出格式】
 * 对于每个询问,如果该区间内存在两个数的异或为x则输出yes,否则输出
 * no
 * 【样例输入】
 * 4 4 1
 * 1 2 3 4
 * 1 4
 * 1 2
 * 2 3
 * 3 3
 * 【样例输出】
 * yes
 * no
 * yes
 * no
 * @since 2022 - 11 - 14 - 22:54
 */
public class B {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), m = sc.nextInt(), x = sc.nextInt();
        int[] nums = new int[n];
        for(int i = 0; i < n; i++){
            nums[i] = sc.nextInt();
        }
        boolean[][] dp = new boolean[n][n];
        for(int i = 0; i < n - 1; i++){
            for(int j = i + 1; j < n; j++){
                if(dp[i][j - 1]){
                    dp[i][j] = true;
                }else{
                    boolean b = false;
                    for(int k = i; k < j; k++){
                        if((nums[k] ^ nums[j]) == x){
                            b = true;
                            break;
                        }
                    }
                    dp[i][j] = b;
                }
            }
        }
        int l,r;
        for(int i = 0; i < m; i++){
            l = sc.nextInt() - 1;
            r = sc.nextInt() - 1;
            System.out.println(dp[l][r] ? "yes" : "no");
        }
    }
}
